/**
 *  
 */
package com.uva.dbcs.practica1.business;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import com.uva.dbcs.practica1.modelo.ConexionBD;
import com.uva.dbcs.practica1.modelo.LoginUserDAO;
import com.uva.dbcs.practica1.modelo.LoginUserDTO;
import com.uva.dbcs.practica1.modelo.VehiculoDAO;
import com.uva.dbcs.practica1.modelo.VehiculoDTO;

/**
 * @author seten
 *
 */
public class VehiculosManejador implements IVehiculosManejador {
	
	 Connection conexion;
	
	/* (non-Javadoc)
	 * @see com.uva.dbcs.practica1.business.IVehiculosManejador#obtenerVehiculo(int)
	 */
	@Override
	public VehiculoDTO obtenerVehiculo(int id) throws ClassNotFoundException, SQLException{
		
		VehiculoDTO vehiculoDTO;
		
        ConexionBD con = new ConexionBD();
        conexion = con.conectar();

        vehiculoDTO = (new VehiculoDAO()).getVehiculoDTO(id, conexion);
        
        // si no se usa un connection pool, las conexiones se deben cerrar
        // siempre.
        con.cerrarConexion(conexion);
       
        return vehiculoDTO;
        
	}
	
	/* (non-Javadoc)
	 * @see com.uva.dbcs.practica1.business.IVehiculosManejador#obtenerVehiculosPaginados(int, int)
	 */
	@Override
	public List<VehiculoDTO> obtenerVehiculosPaginados(int first, int count) throws ClassNotFoundException, SQLException{
		
		List<VehiculoDTO> vehiculoDTOs;
		
        ConexionBD con = new ConexionBD();
        conexion = con.conectar();

        vehiculoDTOs = (new VehiculoDAO()).getVehiculoConPaginacion(first, count
        		, conexion);
        
        con.cerrarConexion(conexion);
       
        return vehiculoDTOs;
		
	}
	
	/* (non-Javadoc)
	 * @see com.uva.dbcs.practica1.business.IVehiculosManejador#getVehiculosCount()
	 */
	@Override
	public int getVehiculosCount() throws ClassNotFoundException, SQLException{
		
		int count;
		
        ConexionBD con = new ConexionBD();
        conexion = con.conectar();

        count = (new VehiculoDAO()).getVehiculoCount(conexion);
        
        con.cerrarConexion(conexion);
       
        return count;
	}
	
	
	
	/* (non-Javadoc)
	 * @see com.uva.dbcs.practica1.business.IVehiculosManejador#vehiculoValidoParaCarnet(com.uva.dbcs.practica1.modelo.VehiculoDTO, com.uva.dbcs.practica1.modelo.LoginUserDTO)
	 */
	@Override
	public boolean vehiculoValidoParaCarnet(VehiculoDTO vehiculoDTO,int  id_usuario){
		
		ConexionBD con = new ConexionBD();
        try {
				conexion = con.conectar();
	
		
		// necesitamos buscar el usuario
		LoginUserDTO user = (new LoginUserDAO()).buscarUsuarioPorId(id_usuario, conexion); 
		
		if (user!=null && vehiculoDTO!=null){
			
			if (user.getCategoria_carnet()>=vehiculoDTO.getCarnet_necesario()){
				return true;
			}
			
		}
		
		
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
		
	}
	
	
	

}
